package futbol
/*
en este testeo de condicional, se testean, meramente, las condiciones pre existentes, 
es decir, si puede jugar dado un lugar u hora determinados y no se fija en la cantidad  de jugadores inscriptos
*/
import org.junit.Assert
import org.junit.Before
import org.junit.Test
import exepcion.CondicionException

class testCondicional {
	
	Partido partido1
	Jugador jugadorCond
	Jugador jugadorEst
	Condicional estCondicional
	CondicionDeHora condiciondehora
	CondicionDeLugar condiciondelugar
	
	@Before
	def void init() {
		partido1= new Partido
		
		jugadorCond= new Jugador
		jugadorEst= new Jugador
		estCondicional= new Condicional
		condiciondehora= new CondicionDeHora
		condiciondelugar= new CondicionDeLugar
		jugadorCond.estado=estCondicional
		jugadorCond.condicion=condiciondehora
		partido1.setHora(1700)
		partido1.setLugar(2)
		condiciondehora.hora=2000
		condiciondelugar.lugar=3
		partido1.agregarJugador(jugadorEst)
	}
	
	@Test(expected=typeof(CondicionException))//si la condicionde hora no se cumple
	def void testInscripcionPorHorafalse(){
		jugadorCond.inscribirmeAPartido(partido1)
	}
	
	@Test //si la condicion de hora se cumple
	def void testInscripcionPorHoratrue(){
		partido1.setHora(2000)
		var i=partido1.cantidadDeJugadoresActuales()
		jugadorCond.inscribirmeAPartido(partido1)
		Assert::assertTrue(i+1==partido1.cantidadDeJugadoresActuales())
	}
	
	@Test(expected=typeof(CondicionException)) //si la condicion de lugar no se cumple
		def void testInscripcionPorLugarfalse(){
		jugadorCond.condicion=condiciondelugar
		jugadorCond.inscribirmeAPartido(partido1)
	}
	@Test //si la condicion de lugar se cumple
	def void testInscripcionPorlugartrue(){
		partido1.setLugar(3)
		jugadorCond.condicion=condiciondelugar
		var i=partido1.cantidadDeJugadoresActuales()
		jugadorCond.inscribirmeAPartido(partido1)
		Assert::assertTrue(i+1==partido1.cantidadDeJugadoresActuales())
	}
	
}